#include <stdio.h>
int add(int a,int b)
{
    return a+b;
}
int sub(int a,int b)
{
    return a-b;
}
int mul(int a,int b)
{
    return a*b;
}
int div(int a,int b)
{
    return a/b;
}
void menu()
{
    printf("*************************\n");
    printf("*****  1.add   2.sub  ****\n");
    printf("*****  3.mul   4.div  0.exit****\n");
}
int main()//计算器,转移表代码实践，用指针数组存放函数地址，用函数指针调用函数
{
    int input=0;
    int x=0;
    int y=0;
    int ret=0;
    int (*p[5])(int,int)={NULL,add,sub,mul,div};
    do{
        menu();
        printf("chooce:>");
        scanf("%d",&input);
        if(input==0)
        {
            printf("exit!\n");
            break;
        }
        else if(input>=1&&input<=4)
        {
            printf("input two number:>");
            scanf("%d %d",&x,&y);
            ret=(*p[input])(x,y);
            printf("%d\n",ret);
        }
        else
        {
            printf("error,enter again!\n");
        }
    }while(input);
    return 0;
}